/**
 * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
 *
 * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
 * copy, modify, and distribute this software in source code or binary form for use
 * in connection with the web services and APIs provided by Facebook.
 *
 * As with any software that integrates with the Facebook platform, your use of
 * this software is subject to the Facebook Developer Principles and Policies
 * [http://developers.facebook.com/policy/]. This copyright notice shall be
 * included in all copies or substantial portions of the software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package com.example.places.utils;

import android.content.Intent;
import android.net.Uri;
import android.telephony.PhoneNumberUtils;

import com.example.places.model.Place;

public class PlaceFieldData {

    public enum Type {
        TEXT,
        LINK,
        PHONE,
        MAP,
        APP_LINK,
    }

    private Place place;
    private String field;
    private String title;
    private String text;
    private Type type;

    public PlaceFieldData(Place place, String field, String title, String text, Type type) {
        this.place = place;
        this.field = field;
        this.title = title;
        this.text = text;
        this.type = type;
    }

    public String getTitle() {
        return title;
    }

    public String getText() {
        return text;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setText(String text) {
        this.text = text;
    }

    public boolean isClickable() {
        return type != Type.TEXT;
    }

    public Intent getActionIntent() {
        Intent intent = null;
        if (type == Type.LINK) {
            intent = new Intent(Intent.ACTION_VIEW);
            String url = text;
            if (!url.startsWith("http")) {
                url = "http://" + url;
            }
            intent.setData(Uri.parse(url));
        } else if (type == Type.MAP) {
            intent = new Intent(
                    android.content.Intent.ACTION_VIEW,
                    Uri.parse("google.navigation:q=" + text));
        } else if (type == Type.PHONE) {
            String number = PhoneNumberUtils.stripSeparators(text);
            intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number));
        } else if (type == Type.APP_LINK) {
            intent = place.getAppLinkIntent("Facebook");
        }
        return intent;
    }
}
